﻿/************************************************************************
** 文  件：
**	SysLog.h
** 功  能：
**	系统日志封装
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2020/10/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/25	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <boost/serialization/singleton.hpp>
#include "spdlog/spdlog.h"

class SysLog
	: public boost::serialization::singleton<SysLog>
{
public:
	SysLog(void);
	virtual ~SysLog(void);

public:
	std::shared_ptr<spdlog::logger> GetLog() {
		return m_log;
	}

protected:
	std::shared_ptr<spdlog::logger> m_log;
};

#define LOG_TRACE(...)       SysLog::get_mutable_instance().GetLog()->trace(__VA_ARGS__)
#define LOG_DEBUG(...)       SysLog::get_mutable_instance().GetLog()->debug(__VA_ARGS__)
#define LOG_INFO(...)        SysLog::get_mutable_instance().GetLog()->info(__VA_ARGS__)
#define LOG_WARN(...)        SysLog::get_mutable_instance().GetLog()->warn(__VA_ARGS__)
#define LOG_ERROR(...)       SysLog::get_mutable_instance().GetLog()->error(__VA_ARGS__)
#define LOG_CRITICAL(...)    SysLog::get_mutable_instance().GetLog()->critical(__VA_ARGS__)